package com.wh.wisdomsite.xbox.common.dao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


/**
 * 一组条件形成的list集合
 * @Package com.wh.wisdomsite.xbox.common.dao
 * @author 谢泽鹏
 * @date 2014年10月8日 下午4:02:14
 * @Copyright 个人版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2014
 * @version V1.0
 */
public class Criteria implements Serializable {


    /**
     * 查询对象
     */
    protected List<Criterion> criteria;


    /**
     * 查询构造函数
     */
    public Criteria() {
        criteria = new ArrayList<Criterion>();
    }


    /**
     * 验证
     * @return
     */
    public boolean getValid() {
        return criteria.size() > 0;
    }

    /**
     * 获取对象集
     * @return
     */
    public List<Criterion> getAllCriteria() {
        return criteria;
    }

    /**
     * 获取对象集
     * @return
     */
    public List<Criterion> getCriteria() {
        return criteria;
    }

    /**
     * 添加查询对象集
     * @param criterions
     * @return
     */
    public Criteria addCriterion(List<Criterion> criterions){
        this.criteria.addAll(criterions);
        return this;
    }

    /**
     * 添加查询对象
     * @param criterion 对象
     * @return
     */
    public Criteria addCriterion(Criterion criterion){
        if (criterion != null) {
            criteria.add(criterion);
        }
            return this;
    }

    /**
     * 单个条件,如id is null
     * @param condition
     */
    public Criteria addCriterion(String condition) {
        if(condition != null){
            criteria.add(new Criterion(condition));
        }
            return this;
    }

    /**
     * 多值条件 id = xxx in (.,......)
     * @param condition
     * @param value
     */
    public Criteria addCriterion(String condition, Object value) {
        if (value != null) {
            criteria.add(new Criterion(condition, value));
        }
            return this;
    }

    /**
     * between in
     * @param condition
     * @param value1
     * @param value2
     */
    public Criteria addCriterion(String condition, Object value1, Object value2) {
        if (value1 != null && value2 != null) {
            criteria.add(new Criterion(condition, value1, value2));
        }
            return this;
    }
}
